import { canIUseModel } from "../common/version";
import { VantComponent } from "../common/component";
import { useParent } from "../common/relation";
VantComponent({
	field: true,
	relation: useParent("radio-group", function () {
		this.updateFromParent();
	}),
	classes: ["icon-class", "label-class"],
	props: {
		name: null,
		value: null,
		disabled: Boolean,
		useIconSlot: Boolean,
		checkedColor: String,
		labelPosition: {
			type: String,
			value: "right"
		},
		labelDisabled: Boolean,
		shape: {
			type: String,
			value: "round"
		},
		iconSize: {
			type: null,
			value: 20
		}
	},
	data: {
		direction: "",
		parentDisabled: false
	},
	methods: {
		updateFromParent() {
			if (!this.parent) {
				return;
			}
			const { value, disabled: parentDisabled, direction } = this.parent.data;
			this.setData({
				value,
				direction,
				parentDisabled
			});
		},
		emitChange(value) {
			const instance = this.parent || this;
			instance.$emit("input", value);
			instance.$emit("change", value);
			if (canIUseModel()) {
				instance.setData({ value });
			}
		},
		onChange() {
			if (!this.data.disabled && !this.data.parentDisabled) {
				this.emitChange(this.data.name);
			}
		},
		onClickLabel() {
			const { disabled, parentDisabled, labelDisabled, name } = this.data;
			if (!(disabled || parentDisabled) && !labelDisabled) {
				this.emitChange(name);
			}
		}
	}
});
